package com.ruoyi.system.wnjk.domain.po;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class PhysicalPackage extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 体检套餐ID */
    private Long id;

    /** 所属医院ID（外键，关联hospital表） */
    @Excel(name = "所属医院ID", readConverterExp = "外=键，关联hospital表")
    private Long hospitalId;

    /** 套餐名称（如“标准体检套餐”、“高级心血管检查”） */
    @Excel(name = "套餐名称", readConverterExp = "如=“标准体检套餐”、“高级心血管检查”")
    private String packageName;

    /** 套餐描述，详细说明包含的项目和特点 */
    @Excel(name = "套餐描述，详细说明包含的项目和特点")
    private String packageDescription;

    /** 套餐价格（单位：元） */
    @Excel(name = "套餐价格", readConverterExp = "单=位：元")
    private BigDecimal price;

    /** 原价（用于显示折扣） */
    @Excel(name = "原价", readConverterExp = "用=于显示折扣")
    private BigDecimal originalPrice;

    /** 体检时长（单位：分钟） */
    @Excel(name = "体检时长", readConverterExp = "单=位：分钟")
    private Long duration;

    /** 包含的体检项目（JSON或逗号分隔的字符串，如“血常规、尿常规、心电图”） */
    @Excel(name = "包含的体检项目", readConverterExp = "J=SON或逗号分隔的字符串，如“血常规、尿常规、心电图”")
    private String items;

    /** 套餐类别 */
    @Excel(name = "套餐类别")
    private String category;

    /** 是否可用（0:不可用，1:可用） */
    @Excel(name = "是否可用", readConverterExp = "0=:不可用，1:可用")
    private Integer isAvailable;

    /** 套餐有效期（单位：天） */
    @Excel(name = "套餐有效期", readConverterExp = "单=位：天")
    private Long validityPeriod;

    /** 推荐年龄范围（如“18-60岁”） */
    @Excel(name = "推荐年龄范围", readConverterExp = "如=“18-60岁”")
    private String recommendedAgeRange;

    /** 目标性别 */
    @Excel(name = "目标性别")
    private String targetGender;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    private String hospitalName;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setHospitalId(Long hospitalId)
    {
        this.hospitalId = hospitalId;
    }

    public Long getHospitalId()
    {
        return hospitalId;
    }
    public void setPackageName(String packageName)
    {
        this.packageName = packageName;
    }

    public String getPackageName()
    {
        return packageName;
    }
    public void setPackageDescription(String packageDescription)
    {
        this.packageDescription = packageDescription;
    }

    public String getPackageDescription()
    {
        return packageDescription;
    }
    public void setPrice(BigDecimal price)
    {
        this.price = price;
    }

    public BigDecimal getPrice()
    {
        return price;
    }
    public void setOriginalPrice(BigDecimal originalPrice)
    {
        this.originalPrice = originalPrice;
    }

    public BigDecimal getOriginalPrice()
    {
        return originalPrice;
    }
    public void setDuration(Long duration)
    {
        this.duration = duration;
    }

    public Long getDuration()
    {
        return duration;
    }
    public void setItems(String items)
    {
        this.items = items;
    }

    public String getItems()
    {
        return items;
    }
    public void setCategory(String category)
    {
        this.category = category;
    }

    public String getCategory()
    {
        return category;
    }
    public void setIsAvailable(Integer isAvailable)
    {
        this.isAvailable = isAvailable;
    }

    public Integer getIsAvailable()
    {
        return isAvailable;
    }
    public void setValidityPeriod(Long validityPeriod)
    {
        this.validityPeriod = validityPeriod;
    }

    public Long getValidityPeriod()
    {
        return validityPeriod;
    }
    public void setRecommendedAgeRange(String recommendedAgeRange)
    {
        this.recommendedAgeRange = recommendedAgeRange;
    }

    public String getRecommendedAgeRange()
    {
        return recommendedAgeRange;
    }
    public void setTargetGender(String targetGender)
    {
        this.targetGender = targetGender;
    }

    public String getTargetGender()
    {
        return targetGender;
    }
    public void setCreatedAt(Date createdAt)
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt()
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt)
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt()
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("hospitalId", getHospitalId())
                .append("packageName", getPackageName())
                .append("packageDescription", getPackageDescription())
                .append("price", getPrice())
                .append("originalPrice", getOriginalPrice())
                .append("duration", getDuration())
                .append("items", getItems())
                .append("category", getCategory())
                .append("isAvailable", getIsAvailable())
                .append("validityPeriod", getValidityPeriod())
                .append("recommendedAgeRange", getRecommendedAgeRange())
                .append("targetGender", getTargetGender())
                .append("createdAt", getCreatedAt())
                .append("updatedAt", getUpdatedAt())
                .toString();
    }
}